package drp.snowbell.util;

public class StrHelper {
	public static boolean isNullOrEmpty(String str) {
		return (str == null || str.length() == 0);
	}

	/**
	 * 如果参数为null 返回空字符串
	 * 
	 * @param obj
	 * @return
	 */
	public static String safeToString(Object obj) {
		return obj == null ? "" : obj.toString();
	}

	/**
	 * 把字符的第一字母大写
	 * 
	 * @param str
	 * @return
	 */
	// public static String toFirstUpperRule(String str) {
	// String ret = str;
	// if (!StrHelper.isNullOrEmpty(str)) {
	// Character first = str.charAt(0);
	// if (first >= 'a' && first <= 'z') {
	// // 如果第一个字母是小写把他转成大写
	// first = Character.toUpperCase(first);
	// if (str.length() > 1) {
	// ret = first + str.substring(1);
	// } else {
	// ret = String.valueOf(first);
	// }
	// }
	// }
	// return ret;
	// }

	/**
	 * 把字符串转成大写下划线规则
	 * 
	 * @param str
	 * @return
	 */
	public static String toUpperRule(String str) {
		StringBuilder sb = new StringBuilder();
		if (!StrHelper.isNullOrEmpty(str)) {
			char[] chs = str.toCharArray();
			for (int i = 0; i < chs.length; i++) {
				char ch = chs[i];
				if (ch >= 'A' && ch <= 'Z' && i > 0) {
					// 如果是大写而且不是第一个字母 则在其前面插入下划线(_)
					char oldCh = chs[i - 1];
					if (oldCh != '_') {
						// 如果前面没有下划线
						sb.append('_');
						sb.append(ch);
					}
				} else {
					sb.append(Character.toUpperCase(ch));
				}
			}
		}
		return sb.toString();
	}

	/**
	 * 判断2个字符串是否相等.如果都是null也返回true.
	 * 
	 * @param str1
	 *            字符串1
	 * @param str2
	 *            字符串2
	 * @return 相等返回true,不相等返回false
	 */
	public static boolean safeEqual(String str1, String str2) {
		boolean ret = false;
		if (str1 == str2) {
			ret = true;
		} else {
			if (str1 != null && str1.equals(str2)) {
				ret = true;
			}
		}
		return ret;
	}
}
